不敢相信我竟然真的寫到了第 30 天!這一路上都很怕自己會斷賽。從剛開始完全沒有頭緒,到現在對資料怎麼處理、API 怎麼串接,以及前後端和其他外部服務之間怎麼傳遞資料,都有了一定的概念。雖然目前對很多技術都還只是很淺的了解,但還是很開心最後真的做出了一個可以讓使用者透過 LINE 輸入問題,並收到分析結果的睡眠分析助手。
在這個過程中,我也發現很多事情其實沒有一開始想得那麼簡單。原本以為只要把 Gemini API 串接進 Java,就可以直接讓 AI 分析資料,但實際做下去後,才發現中間還需要考慮很多事情。像是資料該怎麼整理、怎麼降低 Gemini 產生幻覺的可能、怎麼把使用者的問題分流到不同的分析功能,以及怎麼讓 Java 實際計算後,再把結果交給 Gemini 整理。
在串接 Gemini API 的過程中,也遇到了不少問題,包括免費 API 的使用限制、Request 和 Response 的格式,以及 Rate Limit 等。前面嘗試 Tool Calling 時,發現如果每次都需要多次呼叫 API,不只流程變得更複雜,也容易受到 API 次數限制的影響。因此後來改用比較簡單的 Prompt,讓 Gemini 先判斷要使用哪個分析功能,再由 Java 執行真正的計算,最後將分析結果交給 Gemini 整理成比較適當的回答。這也讓我慢慢理解,生成式 AI 不一定要負責所有工作,而是可以和原本的程式互相配合,各自處理比較適合的部分。
輸出的部分也從原本只能在 Console 顯示結果,慢慢加入 Web、Java Server、Webhook 和 LINE Messaging API。做到這裡才發現,要讓一個功能真的可以被使用,除了串接好 AI 功能之外,還需要處理很多前後端和網路之間的問題。像是 Frontend 要怎麼把 Request 傳給 Backend、不同 Origin 之間的存取限制、外部服務要怎麼找到原本只存在 localhost 的 Server,以及 LINE 傳來的 Event 要怎麼接收並回覆。這些其實都是一開始只專注在 AI 和資料分析時完全沒有想到的問題。
回顧這 30 天,最後完成的成果跟一開始想像的仍然有不小的差距,中間也改過幾次處理的方法。但就是在這樣不斷修改的過程中,我才能逐步理解每個環節需要考慮的事情,也比一開始更清楚每個部分在做什麼。
雖然現在的睡眠分析助手還很簡單,也還有很多需要改善的地方,但至少從一開始只能靠 Vibe Coding 模擬自己的想法,到現在可以真的從 Web 和 LINE 輸入問題,再收到自己的睡眠分析結果,對我來說已經是一個很大的進步。也很開心有這次的機會,真的完成了這次 30 天的挑戰!